/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package hoja4;

/**
 *
 * @author luisorozco
 */
// se importan las diferentes librerias que se utilizaran en la clase

import java.lang.NullPointerException;
import java.util.LinkedList;
import java.util.Vector;
import java.util.List;


// se hace una clase generica utlizando <T> y a la vez implementando la interfaz que es generica que es pila
public class Stack<T>  extends NodeAbstract<T>{
    
        // se hace un atributo privado pila de LinkedList''
       //protected static LinkedList pila;
       protected  SinglyLinkedList<T> pila;
       //pila = new SinglyLinkedList<E>();
    

    /** se crea una lista de SinglyLinkedList que permite que se agreguen o eliminen elementos en la lista al inicio o al final.
        lo cual es fundamental para nuestro programa */
            
            public Stack(){
                pila = new SinglyLinkedList<T>();
            }

            /* este metodo verifica si la lista esta vacia o no*/
            @Override
            public boolean isEmpty() {
                return pila.isEmpty();
            }

            /* este metodo permite introducir un elemento dentro de nuestra pila*/
            @Override
            public  void  push(T elemento) 
            {
                 pila.add(elemento);
            }

            /**este metodo regresar cual es el tamaño de la pila */
            @Override
            public int size() {
               return pila.size();

            }

            
            /**este metodo sacara un elemento de la pila
             *pre: Revisa si hay un elemento
             *post: Imprime un mensaje sino encontro nada
             */
            @Override
            public  T pop(){
                        if (pila.isEmpty()) {
                        return null;
                        }
                        else{
                        System.out.println("No hay ningun elemento en la Pila");
                        return pila.remove();
                        }
            }

            
    
}